/******************************************************************************  
		Universidad del Valle de Guatemala
		Algoritmos y estructuras de datos
		Karen Tojin   08091
		Fecha: 15 de Julio de 2009
		Descrici�n: Programa que simula un parqueo, con el uso de pilas
***************************************************************************** */

/**
 * @author karenAndy
 *
 */

import java.util.Scanner;

/**
 *
 * @author karenAndy
 */
public class Driver {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		char op=' ';
		Scanner ingreso = new Scanner(System.in);
		Parqueo usoParqueo = new Parqueo();
					
		do{
			System.out.println("\t\t.::: PARQUEO :::.");
			System.out.println();
			System.out.println("El parqueo tiene 2 pisos, el 1ero est� en construcci�n por lo que s�lo est� habilitado el 2do.\n");
			System.out.println("Para ingresar un veh�culo presione \'a\'");
			System.out.println("Para egreso de veh�culos presione \'d\'");
			System.out.println("Para ver el estado del parqueo presione \'v\'");
			System.out.println("Para ver el �ltimo automovil que ingres� presione \'u\'");
			System.out.println("Para salir del men� de parqueos presione \'s\'");
			
			System.out.print("\nIngrese la opci�n que desea realizar: ");
			String opcion = ingreso.next();
			if(opcion.length()==1)
				op = opcion.toUpperCase().charAt(0);
			else
				System.out.println("\nHa ingresado una opci�n inv�lida\n");
			
			if (!(op==('A')) && !(op==('D')) && !(op==('V')) && !(op==('U')) && !(op==('S')))//restringe si son n�meros o alguna opci�n inv�lida
			{
				System.out.println("\nHa ingresado una opci�n inv�lida\n");
			}
				
			switch(op){
				case 'A':
				{
					System.out.print("\nIngrese la placa del veh�culo: ");
					String placa = ingreso.next();
					 try {
                         usoParqueo.ParquearAuto(placa);
                         System.out.println("\nSu autom�vil ha sido parqueado en el piso " + usoParqueo.getPiso()+"\n");
                     } catch (Exception exception) {
                         System.out.println(exception);
                     }
                 }
				break;
				case 'D':
				{
					System.out.print("\nIngrese la placa del veh�culo: ");
					String placa = ingreso.next();
					System.out.println();
					System.out.print("Ingrese el piso en el que est� parqueado su veh�culo: ");
					int piso = ingreso.nextInt();
					try {
                        usoParqueo.SacarAuto(placa,piso-1);
                        System.out.println("\nSu autom�vil ha sido retirado\n");
                    } catch (Exception exception) {
                        System.out.println(exception);
                    }
                }
				break;
				case 'V':
				{
					System.out.println("\nEl estado del parqueo es: ");
					System.out.println(usoParqueo.toString());
	            }
				break;
				case 'U':
				{
					System.out.print("\nIngrese el piso en el que est� parqueado su veh�culo: ");
					int piso = ingreso.nextInt();
					try{
						usoParqueo.MostrarTop(piso-1);
					} catch (Exception exception) {
                        System.out.println(exception);
                    }
	            }
				break;
			}
		}
		while(!(op==('S')));
		
		System.out.println("\n\n\t.::Gracias por usar este parqueo::.");
	}

}
